package com.harry.hr.biz.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;

import com.harry.hr.biz.MenuBIZ;
import com.harry.hr.dao.MenuDAO;
import com.harry.hr.dao.RoleDAO;
import com.harry.hr.entity.system.Menu;
import com.harry.hr.entity.system.Role;
import com.harry.hr.entity.system.User;

public class MenuBIZImpl implements MenuBIZ {
	private MenuDAO menuDAO;

	public void setMenuDAO(MenuDAO menuDAO) {
		this.menuDAO = menuDAO;
	}
	
	private RoleDAO roleDAO;

	public void setRoleDAO(RoleDAO roleDAO) {
		this.roleDAO = roleDAO;
	}

	public List<Menu> query(User user) {
		Set<Menu> menus = new HashSet<Menu>();
		for(Role r:roleDAO.query(user))
			menus.addAll(menuDAO.query(r));
		List<Menu> ms = new ArrayList<Menu>();
		ms.addAll(menus);
		Collections.sort(ms);
		return ms;
	}

	public List<Menu> query(Role role) {
		return menuDAO.query(role);
	}

	public void save(Menu menu) {
		menuDAO.save(menu);

	}

	public List<Menu> query(Menu menu, MatchMode mode, Order order) {
		return menuDAO.query(menu, mode, order);
	}

	public Menu getById(int id) {
		return menuDAO.getById(id);
	}

}
